﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using BookStore.Solution.Entities;
using BookStore.Solution.BLL;
using BookStore.Solution.Utilities;

namespace BookStore.Solution.Presentation
{
    public partial class frmPromotion : DevComponents.DotNetBar.OfficeForm
    {
        private bool addNew = true;
        public bool viewDetail = false;
        Promotion promotion = null;
        PromotionManager promotionManager;

        public frmPromotion()
        {
            InitializeComponent();
        }
        public frmPromotion(string promotionID, bool detail)
        {
            InitializeComponent();
          
            addNew = false;
            
            promotion = new Promotion();
            promotionManager = new PromotionManager();
            promotion = promotionManager.GetDetail(promotionID);
            txtPromotionID.Text = promotion.PromotionID;
            txtPromotionName.Text = promotion.PromotionName;
            txtDiscount.Text = promotion.Discount.ToString();
            txtContent.Text = promotion.Content;
            dtpStartDate.Value = promotion.StartDate;
            dtpEndDate.Value = promotion.EndDate;
            if(promotion.Status.Equals("Khả dụng"))
            {
                rdAvailable.Checked = true;
            }
            else{
                rdUnavailable.Checked = true;
            }
            if (detail)
            {
                viewDetail = true;
                btnReset.Visible = false;
                //btnSubmit.Visible = false;
                btnSubmit.Text = "Đóng cửa sổ";
                btnSubmit.Location = new Point(((int)this.Width/2-50),btnSubmit.Location.Y);
                this.Text = "Xem chi tiết khuyến mãi" + promotionID;
                if (rdAvailable.Checked && !rdUnavailable.Checked)
                {
                    rdUnavailable.Enabled = false;
                }
                else
                {
                    rdAvailable.Enabled = false; 
                }
            }
            else
            {
                this.Text = "Cập nhật thông tin khuyến mãi " + promotionID;
                txtPromotionID.Enabled = false;
                txtPromotionID.ForeColor = Color.Red;
            }
        }

        private void btnSubmit_Click(object sender, EventArgs e)
        {
            if (viewDetail)
            {
                this.Close();
            }
            else
            {
                string result = "";
                if (checkValidation())
                {
                    try
                    {
                        promotion = new Promotion();
                        promotion.PromotionID = txtPromotionID.Text;
                        promotion.PromotionName = txtPromotionName.Text;
                        promotion.StartDate = DateTime.Parse(dtpStartDate.Value.ToShortDateString());
                        promotion.EndDate = DateTime.Parse(dtpEndDate.Value.ToShortDateString());
                        promotion.Discount = int.Parse(txtDiscount.Text);
                        promotion.Content = txtContent.Text;
                        promotion.Status = "Khả dụng";
                        if (rdUnavailable.Checked)
                            promotion.Status = "Hết hiệu lực";
                        promotionManager = new PromotionManager();
                        if (addNew)
                        {
                            result = promotionManager.Insert(promotion);
                        }
                        else
                        {
                            result = promotionManager.Update(promotion);
                        }
                        if (result != "")
                        {
                            DialogResult dlr = MessageBox.Show(result, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            if (dlr == DialogResult.OK)
                                this.Close();
                        }
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                }
                else
                    MessageBox.Show("Dữ liệu nhập vào bị thiếu hoặc không chính xác", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
        private bool checkValidation()
        {
            //Ràng buộc dữ liệu NULL
            if (txtPromotionID.Text == "") 
            {
                lblPromotionID.ForeColor = Color.Red;
                return false;
            }
            if (txtPromotionName.Text == "")
            {
                lblPromotionName.ForeColor = Color.Red;
                return false;
            }
            if (dtpStartDate.IsEmpty)
            {
                lblStartDate.ForeColor = Color.Red;
                return false;
            }
            if (dtpEndDate.IsEmpty)
            {
                lblEndDate.ForeColor = Color.Red;
                return false;
            }
            //Ràng buộc dữ liệu ngày tháng
            if (dtpEndDate.Value < dtpStartDate.Value)
            {
                lblEndDate.ForeColor = Color.Red;
                lblStartDate.ForeColor = Color.Red;
                MessageBox.Show("Ngày bắt đầu khuyến mãi không thể nhỏ hơn ngày kết thúc", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            //Ràng buộc phần trăm khuyến mãi
            if (txtDiscount.Text == "")
            {
                lblPercent.ForeColor = Color.Red;
                return false;
            }
            //Ràng buộc kiểu dữ liệu số cho phần trăm khuyến mãi
            if (!(0 <= DataUtil.ToInt(txtDiscount.Text, -1) && DataUtil.ToInt(txtDiscount.Text, -1) <= 100))
            {
                lblPercent.ForeColor = Color.Red;
                MessageBox.Show("Phần trăm khuyến mãi phải nằm trong khoảng 1 - 100", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            //Ràng buộc tình trạng của khuyến mãi dựa trên ngay kết thúc
            //khi thêm mới khuyến mãi
            if (dtpEndDate.Value < DateTime.Now && rdAvailable.Checked && addNew)
            {
                lblEndDate.ForeColor = Color.Red;
                rdAvailable.ForeColor = Color.Red;
                MessageBox.Show("Khuyến mãi không thể có hiệu lực khi ngày kết thúc chương trình đã qua", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            return true;
        }

        private void btnReset_Click(object sender, EventArgs e)
        {
            if (addNew)
                txtPromotionID.ResetText();
            txtPromotionName.ResetText();
            txtDiscount.ResetText();
        }
    }
}